近日入手了小树 T3 3D 打印机,经过各种折腾升级改造调试,终于得到了一个还算过得去的精度状态。
这篇博文分享一下 T3 升级 3DTouch 自动调平模块的教程。
原理
3DTouch 是 BLTouch 的中国山寨版,3DTouch 便宜很多,精度相对低一点点,但是对 T3 这种入门型打印机绰绰有余了。3DTouch 的原理是,一根可以电动控制伸长的触针,收缩的状态下是安装在比打印机喷头更上的位置的,在需要调平或者定位 Z 轴零点的时候,伸长触针,在下降过程中就会比喷头更快接触到热床,通过在热床平台上若干个点进行检测,可以得到平台各点的高度差值,从而在打印时可以对 Z 轴进行补偿,即使平台不水平也可以打印出完美的第一层。还有一点好处是 3DTouch 可以代替 Z 轴的限位开关,可以及其细微的调整 Z 轴零点的位置,通过不断调试修改喷头与 3DTouch 的垂直距离可以得到一个完美的 Z 轴 0 点位置。
参考资料
安装流程、接线、代码修改主要参考 B 站的这个视频。
安装 3DTouch 需要安装 Marlin2.0 的固件,我是在小树官网找到 天域版的固件 来进行修改的。
刷机教程参考的是兔爸的刷入教程,注意第一次输入时要关闭科学软件,否则导致无法联网下载依赖包导致失败。
按照 兔爸 和这篇 csdn 博客,做一些基本配置,电机方向、旋钮方向、温度设置等。
安装 3DTouch
首先,安装 3DTouch,由于小树默认是没有支持 3DTouch 的,所以没有留出安装位置,需要用到我自己绘制的结构件。下载地址:链接: https://pan.baidu.com/s/1na4vSsrRhtpVwGFg9odcrw 提取码: 5nks 。
安装效果如图:
安装好后需要进行接线操作,有两种接线方式,一种是 3DTouch 仅用来调平,Z 轴归零点还是由 Z 轴上的限位开关来实现。另一种是接线方式是 3DTouch 同时用于调平和归零。我选取的是第二种接线方式。接线如下,截取自前面参考的视频:
刷固件与参数配置
首先要刷上 Marlin2.0 的固件,参照前面参考章节的链接来刷入,参考视频链接对固件进行修改,这里只记录各个修改位置以及我自己改的地方。
Configuration.h
#define CUSTOM_MACHINE_NAME,配置启动完成后主页显示的设备名字,可以设置为自己喜欢的名字。
#define PIDTEMPBED,由于发现 PID 控制热床到不了指定的温度,我又不想研究怎么调试 PID,所以这一行我注释掉了,取消 PID 控制热床温度,发现效果也蛮好,能控制在 ±1 度。
#define Z_MIN_PROBE_ENDSTOP_INVERTING,设置 3DTouch 开关电平,这里设置为 false。
#define Z_MIN_PROBE_PIN,设置 3DTouch 使用的 pin 口,这里按照视频里的设置为 19。
#defineFIX_MOUNTED_PROBE,由于使用了 3DTouch,注释掉这一行。
#define BLTOUCH,取消注释这一行,开启 3DTouch。
#define AUTO_BED_LEVELING_BILINEAR,按照视频,取消注释这一行,另外 4 行注释掉。这里是关于调平补偿算法的设置,具体含义可以看这个链接。
#define NOZZLE_TO_PROBE_OFFSET,设置 3DTouch 与喷嘴的偏移量,按照视频里的教程来获得偏移量即可。第一次刷固件仅仅是开启 3DTouch,偏移量是不知道的,开启 3DTouch 后才能控制 3DTouch 的探针弹出,进而才能获得偏移量,然后设置好这个值需要再次刷固件。
#define X_BED_SIZE,设置热床 X 的大小,实际测试 X 轴在导轨上能移动的距离,我设置为 120。
#define Y_BED_SIZE,我实际测试 Y 轴只能移动 110 多一点,所以我实际设置为 110。
#define Z_MAX_POS,我实际测试设置为 155,比较保险。
#define Z_SAFE_HOMING,开启这个配置配置防止 Z 轴归零到热床之外。
#define Z_SAFE_HOMING_X_POINT 和 #define Z_SAFE_HOMING_Y_POINT,配置归原点的 X 和 Y 点,这个点也是打印开始时的位置。这里特别要注意的是,这里的 X 和 Y 点指的是 3DTouch 探针的点,所以比如要让喷头归 X 和 Y 的零点,需要设置为喷头的偏移量,如果直接设置为 0,由于 3DTouch 安装在喷头的右边,3DTouch 是无法移动到 0,0 这个点的,屏幕会显示无法移动到热床外,打印机不可用。
#define NUM_SERVOS,参考视频,取消注释,开启舵机,并设置为 1。
#define EEPROM_SETTINGS,开启 eeprom 存储调平参数。
#define GRID_MAX_POINTS_X,设置调平点数,默认是 3*3,小树的平台比较小,3*3 够用了。
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN,使用 3DTouch 代替 z 轴限位器,需要取消注释这个配置。
Configuration_adv.h
- #if PROBE_SELECTED && !IS_KINEMATIC,参照视频,里面的 4 个宏都取消注释,设置调平范围。
src/pins/ramps/pins_RAMPS.h
- #define SERVO0_PIN,参照视频,设置为 11。
src/gcode/calibrate/G28.cpp
参照视频,在最后加上 set_bed_leveling_enabled(true);
其他
- 在调整 zoffset 时,调小则打印第一层的时候离得更近,调大则离远,比如 - 2 就比 - 1 更近,记住负得越多越近即可。
- 如果需要每次开始打印前自动调平,则在 cura 中设置开始 Gcode,在 G28 下方插入一条 G29 即可。